package com.yc.cloud.openai.portal.dao;

import com.yc.cloud.openai.portal.dto.gpt.GPTCreateDatasetCollectionDataDto;
import com.yc.cloud.openai.portal.dto.gpt.GptDatasetCollectionCreateDto;
import com.yc.cloud.openai.portal.dto.gpt.GptDatasetCreateDto;
import com.yc.cloud.openai.portal.dto.gpt.GptDatasetUpdateDto;
import com.yc.cloud.openai.portal.dto.request.ChatCompletionsRequest;
import com.yc.cloud.openai.portal.dto.response.GPTChatResponseResult;

import reactor.core.publisher.Flux;

public interface GPTChatClient {

    /**
     * 知识问答(流式)
     * 
     * @param request 知识问答请求
     * @return 知识问答结果
     */
    Flux<String> completionsByStream(ChatCompletionsRequest request);

    /**
     * 知识问答
     * 
     * @param request 知识问答请求
     * @return 知识问答结果
     */
    String completions(ChatCompletionsRequest request);

    /**
     * 创建知识库文件集合
     * 
     * @param request 知识库文件集合创建参数
     * @return 知识库文件集合ID
     */
    GPTChatResponseResult<GPTCreateDatasetCollectionDataDto> createDatasetCollection(GptDatasetCollectionCreateDto request);

    /**
     * 创建知识库
     * 
     * @param request 知识库创建参数
     * @return 知识库ID
     */
    GPTChatResponseResult<String> createDataset(GptDatasetCreateDto request);

    /**
     * 删除知识库
     * 
     * @param datasetId 知识库ID
     * @return 删除结果
     */
    GPTChatResponseResult deleteDataset(String datasetId);

    /**
     * 更新知识库
     * 
     * @param gptDatasetUpdateDto 知识库更新参数
     * @return 更新结果
     */
    GPTChatResponseResult updateDataset(GptDatasetUpdateDto gptDatasetUpdateDto);

    /**
     * 删除知识库内容集合
     * 
     * @param collectionId 知识库内容集合ID
     * @return 删除结果
     */
    GPTChatResponseResult deleteDatasetCollection(String collectionId);

}
